#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

// const int N = 2;

// void slaver(int wfd)
// {
//     const char *str = "Hello Linux!!!\n";
//     while(true)
//     {
//         ssize_t s = write(wfd, str, sizeof(str));
//         if(s < 0)
//         {
//             perror("test.cpp::slaver::write");
//             return;
//         }
//     }
// }

// int main()
// {
//     int pipefd[N];

//     if(pipe(pipefd) < 0)
//     {
//         perror("test.cpp::main::pipe");
//         return 1;
//     }

//     pid_t id = fork();
//     if(id == 0)
//     {
//         close(pipefd[0]);
//         slaver(pipefd[1]);
//         close(pipefd[1]);
        
//         exit(0);
//     }

//     close(pipefd[1]);
//     printf("read quit!\n");
//     close(pipefd[0]);

//     int stutas = 0;
//     waitpid(id, &stutas, 0);

//     printf("Qiut signal: %d\n", stutas&0x7F);

//     return 0;
// }

void myhandler(int signal)
{

    std::cout << "...get a sig, number: " << signal << std::endl; //我什么都没干，我只是打印了消息
    // exit(1);
    // int n = alarm(5);
    // std::cout << "剩余时间：" << n << std::endl;
//     std::cout << "get a signal " << signal << std::endl;
//     int n = alarm(5); 
//     printf("myhandler->n: %d\n", n);
}

int main()
{

    signal(SIGALRM, myhandler);
    int n = alarm(6);
    std::cout << "剩余时间：" << n << std::endl;
    while(1)
    {
        std::cout << "proc is running..., pid: " << getpid() << std::endl;
        sleep(1);
    }
    // signal(SIGALRM, myhandler);

    // int n = 0;
    // alarm(5);
    // while(true)
    // {
    //     sleep(1);
    //      //设置一个5秒的闹钟，发送SIGALRM信号
    //     printf("main->n: %d\n", n);
    // }
   // raise(SIGALRM);
    
    // while(true)
    // {
    //     sleep(1);
    //     printf("I am process!!!\n");

        //raise(6);
        //kill(getpid(), 2);
        //abort();
        //printf("I am process pid: %d\n", getpid());
   // }

    return 0;
}



